package com.cy.store.mapper;

import com.cy.store.entity.User;
import org.apache.ibatis.annotations.Param;

import javax.xml.crypto.Data;
import java.util.Date;

// 用户模块的持久层接口
public interface UserMapper {

    /*
     * 插入用户的数据
     * @Param user 用户的数据
     * @return 受影响的行数(增删改都有受影响的行数作为返回值，可以根据返回值的行数来判断是否执行成功
     * */
    Integer insert(User user);

    /*
     * 根据用户名查询用户的数据
     * @Param user 用户名
     * @return 如果找到则返回这个用户的数据，没有则返回null
     * */
    User findByUsername(String username);

    /**
     * 根据用户的uid来修改用户密码
     *
     * @param uid
     * @param password,
     * @param modifiedTime
     * @param modifiedUser
     * @return [受影响的行数]
     * @author AngJie
     * @creed: Talk is cheap,show me the code
     * @date 2022/2/6 0006 19:01
     */
    Integer updatePasswordByUid(
            Integer uid,
            String password,
            Date modifiedTime,
            String modifiedUser);

    /**
     * 根据用户的id查询用户的数据
     * @param uid
     * @return [uid]
     * @author AngJie
     * @creed: Talk is cheap,show me the code
     * @date 2022/2/6 0006 19:03
     */
    User findByUid(Integer uid);

    /**
     * 更新用户的数据信息
     * @param user
     * @return 修改的行数
     */
    Integer updateInfo(User user);

    /**
     * 修改用户的头像
     * @Param 可以将sql映射文件中#{}占位符 与接口中的参数进行精准映射
     * @param uid
     * @param avatar
     * @param modifiedUser
     * @param modifiedTime
     * @return [修改的行数]
     * @author AngJie
     * @creed: Talk is cheap,show me the code
     * @date 2022/2/7 0007 12:13
     */
    Integer updateAuatarByUid(@Param("uid") Integer uid,
                              String avatar,
                              String modifiedUser,
                              Date modifiedTime);


}
